home *** CD-ROM | disk | FTP | other *** search
/ The Games Machine 76 / XENIATGM66.iso / Indiana Jones / Indiana Jones.exe / RESOURCE / PREVIEW.GOB / cog_weap_satchel.cog < prev    next >
Text File  |  1999-11-15  |  4KB  |  203 lines

  1. # Jones 3D Cog Script
  2. #
  3. # weap_Satchel.cog
  4. #
  5. # [RandyT]
  6. #
  7. # This COG controls Satchel Charges.
  8. #
  9. # (C) 1998 LucasArts Entertainment Company LLC. All Rights Reserved
  10. #
  11. # ===================================================================
  12.  
  13. symbols
  14.  
  15. message        startup
  16. message        fire
  17. message        activated
  18. message        deactivated
  19. message        selected
  20. message        deselected
  21. message        callback
  22. message        timer
  23.  
  24. sound        pull=gen_grenade_pull.wav    local    # Autoloaded
  25. sound        put=gen_grenade_put.wav        local    # Autoloaded
  26. sound        drop=gen_satchel_fire.wav    local    # Autoloaded
  27.  
  28. template    projectile=+satchel            local    # Autoloaded
  29.  
  30. thing        player                        local
  31. thing        satchel                        local
  32.  
  33. int            handNode                    local
  34. int            weaponNum=12                local
  35. int            callNum                        local
  36.  
  37. int            bFiring=0                    local
  38. int            bUsed=0                        local
  39.  
  40. vector        firePos                        local
  41.  
  42. end
  43.  
  44. # ===================================================================
  45.  
  46. code
  47.  
  48. startup:
  49.  
  50.     player = GetLocalPlayerThing();
  51.     handNode = GetNodeByName(player, "inrhand");
  52.  
  53.     return;
  54.  
  55. # -------------------------------------------------------------------
  56.  
  57. fire:
  58.  
  59.     # If the message is from the weapons system, play the animation
  60.     if (GetParam(0) != -1)
  61.     {
  62.         # Make sure we're not already firing
  63.         if (bFiring) return;
  64.  
  65.         bFiring = 1;
  66.         SetFireWait(player, 1.77);
  67.  
  68.         CaptureThing(player);
  69.         SetActorFlags(player, 0x200000);
  70.         StopThing(player);
  71.  
  72.         PlayMode(player, 68, 0);
  73.         return;
  74.     }
  75.  
  76.     # Actual firing takes place when we get the callback...
  77.     firePos = GetThingJointPos(player, handNode);
  78.  
  79.     satchel = FireProjectile(player, projectile, drop, -1, firePos, '0 0 0', 1.0, 0x0, 0.0, 0.0);
  80.     bFiring = 0;
  81.  
  82.     # Start the proximity timer
  83.     CaptureThing(satchel);
  84.     SetThingTimer(satchel, 2.0);
  85.  
  86.     # Lose a satchel charge...
  87.     ChangeInv(player, weaponNum, -1.0);
  88.     bUsed = 1;
  89.  
  90.     # Weapon is no longer active
  91.     StopMode(player, 66, 0);
  92.     SetAimWait(player, 0.0);
  93.     DeactivateWeapon(player);
  94.     ResetWeaponModel(player);
  95.  
  96.     return;
  97.  
  98. # -------------------------------------------------------------------
  99.  
  100. activated:
  101.  
  102.     SetAimWait(player, 0.05);
  103.     ActivateWeapon(player, 0.01);
  104.  
  105.     return;
  106.  
  107. # -------------------------------------------------------------------
  108.  
  109. deactivated:
  110.  
  111.     if (bUsed)
  112.     {
  113.         DeselectWeapon(player);
  114.     }
  115.  
  116.     DeactivateWeapon(player);
  117.  
  118.     return;
  119.  
  120. # -------------------------------------------------------------------
  121.  
  122. selected:
  123.  
  124.     SetAimWait(player, 0.0);
  125.     SetMountWait(player, 0.67);
  126.  
  127.     SetArmedMode(player, 6);
  128.     SetCurWeapon(player, weaponNum);
  129.     SetThingFireOffset(player, '0.0 0.0 -0.003'); 
  130.  
  131.     CaptureThing(player);
  132.     PlayMode(player, 66, 0);
  133.  
  134.     return;
  135.  
  136. # -------------------------------------------------------------------
  137.  
  138. deselected:
  139.  
  140.     SetMountWait(player, 1.0);
  141.  
  142.     # No "put" anim if Indy used the charge...
  143.     if (bUsed)
  144.     {
  145.         bUsed = 0;
  146.         SetArmedMode(player, 0);
  147.  
  148.         # Make sure Indy's not out of ammo
  149.         if (GetInv(player, weaponNum) < 1)
  150.         {
  151.             PlayVoiceMode(player, 123);
  152.             SelectWeaponWait(player, 3);
  153.         }
  154.  
  155.         return;
  156.     }
  157.  
  158.     CaptureThing(player);
  159.     StopMode(player, 66, 0);
  160.     PlayMode(player, 67, 0);
  161.  
  162.     SetArmedMode(player, 0);
  163.     bFiring = 0;
  164.  
  165.     return;
  166.  
  167. # -------------------------------------------------------------------
  168.  
  169. callback:
  170.  
  171.     callNum = GetParam(1);
  172.     ReleaseThing(player);
  173.  
  174.     if (callNum == 28)
  175.     {
  176.         PlaySoundThing(pull, player, 1, -1, -1, 0x880);
  177.         SetWeaponModel(player, weaponNum);
  178.     }
  179.     else if (callNum == 29)
  180.     {
  181.         PlaySoundThing(put, player, 1, -1, -1, 0x880);
  182.         ResetWeaponModel(player);    
  183.     }
  184.     else if (callNum == 30)
  185.     {
  186.         ClearActorFlags(player, 0x200000);
  187.     }
  188.  
  189.     return;
  190.  
  191. # -------------------------------------------------------------------
  192.  
  193. timer:
  194.  
  195.     if (GetSenderRef() == satchel)
  196.     {
  197.         SetThingCollideSize(satchel, 0.05);
  198.     }
  199.  
  200.     return;
  201.  
  202. end
  203.